home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / strategy / xpuzzles.3 / xpuzzles / xpuzzles-5.3.1 / xmlink / MlinkP.h < prev    next >
C/C++ Source or Header  |  1996-02-05  |  3KB  |  123 lines

  1. /*
  2. # X-BASED MISSING LINK(tm)
  3. #
  4. #  MlinkP.h
  5. #
  6. ###
  7. #
  8. #  Copyright (c) 1994 - 96    David Albert Bagley, bagleyd@hertz.njit.edu
  9. #
  10. #                   All Rights Reserved
  11. #
  12. #  Permission to use, copy, modify, and distribute this software and
  13. #  its documentation for any purpose and without fee is hereby granted,
  14. #  provided that the above copyright notice appear in all copies and
  15. #  that both that copyright notice and this permission notice appear in
  16. #  supporting documentation, and that the name of the author not be
  17. #  used in advertising or publicity pertaining to distribution of the
  18. #  software without specific, written prior permission.
  19. #
  20. #  This program is distributed in the hope that it will be "playable",
  21. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  22. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  23. #
  24. */
  25.  
  26. /* Private header file for Mlink */
  27.  
  28. #ifndef _MlinkP_h
  29. #define _MlinkP_h
  30.  
  31. #include "Mlink.h"
  32.  
  33. /*** random number generator ***/
  34. /* insert your favorite */
  35. extern void SetRNG();
  36. extern long LongRNG();
  37. #define SRAND(X) SetRNG((long) X)
  38. #define LRAND() LongRNG()
  39.  
  40. #define NRAND(X) ((int)(LRAND()%(X)))
  41.  
  42. #define SYMBOL ':'
  43.  
  44. #define TOP 0
  45. #define RIGHT 1
  46. #define BOTTOM 2
  47. #define LEFT 3
  48. #define COORD 4
  49.  
  50. /* The following are in xmlink.c also */
  51. #define MINFACES 1
  52. #define MAXFACES 8
  53. #define MINTILES 1
  54.  
  55. #define DEFAULTTILES 4
  56. #define DEFAULTFACES 4
  57.  
  58. #define ABS(a) (((a)<0)?(-a):(a))
  59. #define SIGN(a) (((a)<0)?(-1):1)
  60. #define MIN(a,b) (((int)(a)<(int)(b))?(int)(a):(int)(b))
  61. #define MAX(a,b) (((int)(a)>(int)(b))?(int)(a):(int)(b))
  62.  
  63. typedef struct _MlinkPart
  64. {
  65.   Pixel foreground;
  66.   Pixel tileColor, borderColor;
  67.   Pixel faceColor[MAXFACES];
  68.   int *tileOfPosition, spacePosition;
  69.   int currentTile, currentFace, currentRef;
  70.   Boolean started, orient, mono, middle;
  71.   int depth;
  72.   int base;
  73.   int tiles, faces, tileFaces;
  74.   XPoint offset, tileSize, faceSize, puzzleSize;
  75.   XPoint delta, puzzleOffset, digitOffset;
  76.   GC puzzleGC;
  77.   GC tileGC;
  78.   GC borderGC;
  79.   GC faceGC[MAXFACES];
  80.   GC inverseGC;
  81.   String faceName[MAXFACES];
  82.   XtCallbackList select;
  83. } MlinkPart;
  84.  
  85. typedef struct _MlinkRec
  86. {
  87.   CorePart core;
  88.   MlinkPart mlink;
  89. } MlinkRec;
  90.  
  91. /* This gets around C's inability to do inheritance */
  92. typedef struct _MlinkClassPart
  93. {
  94.   int ignore;
  95. } MlinkClassPart;
  96.  
  97. typedef struct _MlinkClassRec
  98. {
  99.   CoreClassPart core_class;
  100.   MlinkClassPart mlink_class;
  101. } MlinkClassRec;
  102.  
  103. extern MlinkClassRec mlinkClassRec;
  104. extern int *startPosition;
  105.  
  106. extern int MoveMlink();
  107. /*extern void SolveTiles();*/ /* For future auto-solver */
  108. extern void DrawAllTiles();
  109. extern Boolean CheckSolved();
  110. extern void InitMoves();
  111. extern void PutMove();
  112. extern void GetMove();
  113. extern int MadeMoves();
  114. extern void FlushMoves();
  115. extern int NumMoves();
  116. extern void ScanMoves();
  117. extern void PrintMoves();
  118. extern void ScanStartPosition();
  119. extern void PrintStartPosition();
  120. extern void SetStartPosition();
  121.  
  122. #endif /* _MlinkP_h */
  123.